package v1

import (
	"devops-super/internal/model/mymodel"
	"github.com/gogf/gf/v2/frame/g"
)

// GetSceneListByPeopleReq 根据联系人ID获取关联的告警场景列表请求

type GetSceneListByPeopleReq struct {
	g.Meta   `method:"get" path:"/alert-operate/scene-list-by-people" summary:"根据联系人ID获取关联的告警场景列表" tags:"告警操作"`
	PeopleId uint64 `json:"peopleId" v:"required#联系人ID不能为空"`
}

// GetSceneListByPeopleRes 根据联系人ID获取关联的告警场景列表响应

type GetSceneListByPeopleRes struct {
	Scenes []*mymodel.AlertSceneResponse `json:"scenes" description:"告警场景列表"`
}

// SetPeopleSceneRelReq 设置联系人关联的告警场景请求

type SetPeopleSceneRelReq struct {
	g.Meta   `method:"post" path:"/alert-operate/set-people-scene-rel" summary:"设置联系人关联的告警场景" tags:"告警操作"`
	PeopleId uint64  `json:"peopleId" v:"required#联系人ID不能为空"`
	SceneIds []int64 `json:"sceneIds"`
}

// SetPeopleSceneRelRes 设置联系人关联的告警场景响应

type SetPeopleSceneRelRes struct{}

// GetSceneListByDeviceReq 根据deviceNo获取关联的告警场景列表请求

type GetSceneListByDeviceReq struct {
	g.Meta   `method:"get" path:"/alert-operate/scene-list-by-device" summary:"根据设备ID获取关联的告警场景列表" tags:"告警操作"`
	DeviceNo string `json:"deviceNo" v:"required#deviceNo不能为空"`
}

// GetSceneListByDeviceRes 根据deviceNo获取关联的告警场景列表响应

type GetSceneListByDeviceRes struct {
	Scenes []*mymodel.AlertSceneResponse `json:"scenes" description:"告警场景列表"`
}

// SetDeviceSceneRelReq 设置设备关联的告警场景请求

type SetDeviceSceneRelReq struct {
	g.Meta   `method:"post" path:"/alert-operate/set-device-scene-rel" summary:"设置设备关联的告警场景" tags:"告警操作"`
	DeviceNo string  `json:"deviceNo" v:"required#deviceNo不能为空"`
	SceneIds []int64 `json:"sceneIds"`
}

// SetDeviceSceneRelRes 设置设备关联的告警场景响应

type SetDeviceSceneRelRes struct{}

// GetDeviceListBySceneReq 根据场景ID获取关联的设备列表请求

type GetDeviceListBySceneReq struct {
	g.Meta  `method:"get" path:"/alert-operate/device-list-by-scene" summary:"根据场景ID获取关联的设备列表" tags:"告警操作"`
	SceneId int64 `json:"sceneId" v:"required#场景ID不能为空"`
}

// GetDeviceListBySceneRes 根据场景ID获取关联的设备列表响应

type GetDeviceListBySceneRes struct {
	Devices []*mymodel.AppDeviceResponse `json:"devices" description:"设备列表"`
}

// SetSceneDeviceRelReq 设置场景关联的设备请求

type SetSceneDeviceRelReq struct {
	g.Meta    `method:"post" path:"/alert-operate/set-scene-device-rel" summary:"设置场景关联的设备" tags:"告警操作"`
	SceneId   int64    `json:"sceneId" v:"required#场景ID不能为空"`
	DeviceNos []string `json:"deviceNos"`
}

// SetSceneDeviceRelRes 设置场景关联的设备响应

type SetSceneDeviceRelRes struct{}

// GetPeopleListBySceneReq 根据场景ID获取关联的联系人列表请求

type GetPeopleListBySceneReq struct {
	g.Meta  `method:"get" path:"/alert-operate/people-list-by-scene" summary:"根据场景ID获取关联的联系人列表" tags:"告警操作"`
	SceneId int64 `json:"sceneId" v:"required#场景ID不能为空"`
}

// GetPeopleListBySceneRes 根据场景ID获取关联的联系人列表响应

type GetPeopleListBySceneRes struct {
	People []*mymodel.AlertPeopleResponse `json:"people" description:"联系人列表"`
}

// SetScenePeopleRelReq 设置场景关联的联系人请求

type SetScenePeopleRelReq struct {
	g.Meta    `method:"post" path:"/alert-operate/set-scene-people-rel" summary:"设置场景关联的联系人" tags:"告警操作"`
	SceneId   int64    `json:"sceneId" v:"required#场景ID不能为空"`
	PeopleIds []uint64 `json:"peopleIds"`
}

// SetScenePeopleRelRes 设置场景关联的联系人响应

type SetScenePeopleRelRes struct{}

// GetSceneListByDeviceGroupReq 根据设备分组ID获取关联的告警场景列表请求

type GetSceneListByDeviceGroupReq struct {
	g.Meta        `method:"get" path:"/alert-operate/scene-list-by-device-group" summary:"根据设备分组ID获取关联的告警场景列表" tags:"告警操作"`
	DeviceGroupId uint64 `json:"deviceGroupId" v:"required#设备分组ID不能为空"`
}

// GetSceneListByDeviceGroupRes 根据设备分组ID获取关联的告警场景列表响应

type GetSceneListByDeviceGroupRes struct {
	Scenes []*mymodel.AlertSceneResponse `json:"scenes" description:"告警场景列表"`
}

// SetDeviceGroupSceneRelReq 设置设备分组关联的告警场景请求

type SetDeviceGroupSceneRelReq struct {
	g.Meta        `method:"post" path:"/alert-operate/set-device-group-scene-rel" summary:"设置设备分组关联的告警场景" tags:"告警操作"`
	DeviceGroupId uint64  `json:"deviceGroupId" v:"required#设备分组ID不能为空"`
	SceneIds      []int64 `json:"sceneIds"`
}

// SetDeviceGroupSceneRelRes 设置设备分组关联的告警场景响应

type SetDeviceGroupSceneRelRes struct{}

// GetDeviceGroupListBySceneReq 根据场景ID获取关联的设备分组列表请求

type GetDeviceGroupListBySceneReq struct {
	g.Meta  `method:"get" path:"/alert-operate/device-group-list-by-scene" summary:"根据场景ID获取关联的设备分组列表" tags:"告警操作"`
	SceneId int64 `json:"sceneId" v:"required#场景ID不能为空"`
}

// GetDeviceGroupListBySceneRes 根据场景ID获取关联的设备分组列表响应

type GetDeviceGroupListBySceneRes struct {
	DeviceGroups []*mymodel.AppDeviceGroupResponse `json:"deviceGroups" description:"设备分组列表"`
}

// SetSceneDeviceGroupRelReq 设置场景关联的设备分组请求

type SetSceneDeviceGroupRelReq struct {
	g.Meta         `method:"post" path:"/alert-operate/set-scene-device-group-rel" summary:"设置场景关联的设备分组" tags:"告警操作"`
	SceneId        int64    `json:"sceneId" v:"required#场景ID不能为空"`
	DeviceGroupIds []uint64 `json:"deviceGroupIds"`
}

// SetSceneDeviceGroupRelRes 设置场景关联的设备分组响应

type SetSceneDeviceGroupRelRes struct{}
